package com.rlyy.http.process.strategy;

import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest;
import org.springframework.stereotype.Repository;

/**
 * 策略 + 责任链
 * 处理请求扩展接口、支持自定义扩展处理其他请求方式
 * 业务如需扩展实现此接口 自定义requestHandler处理逻辑即可。
 *
 * @author yuanqinglong
 * @since 2020/11/11 9:30
 */
@Repository
public interface IRequestProcess {

    /**
     * 解析请求逻辑
     *
     * @param ctx     .
     * @param request 请求信息
     * @throws Exception 异常信息
     */
    void requestHandler(ChannelHandlerContext ctx, FullHttpRequest request) throws Exception;


    /**
     * 校验是否处理此请求方式的请求
     *
     * @param request 请求信息 判断此请求的请求方式(POST、GET、PUT、DELETE。。。)
     * @throws Exception 异常信息
     * @return true OR false
     */
    boolean supportsHandler(FullHttpRequest request) throws Exception;
}
